﻿using Newtonsoft.Json;
using ThresholdAssistant.Enums;
using System;
using System.Text.Json.Serialization;

namespace ThresholdAssistant.DataContract.Headers
{
    /// <summary>
    /// 机器人Header头部信息
    /// </summary>
    [Serializable]
    public class RobotHeader
    {
        /// <summary>
        /// 机器人类型/协议类型
        /// </summary>
        [JsonProperty("robot-type"), JsonPropertyName("robot-type")]
        public RobotProtocolType ProtocolType { get; set; }

        /// <summary>
        /// 设备编号
        /// </summary>
        [JsonProperty("device-no"), JsonPropertyName("device-no")]
        public string DeviceNo { get; set; }

        /// <summary>
        /// 机器人版本号
        /// </summary>
        [JsonProperty("robot-version"), JsonPropertyName("robot-version")]
        public string RobotVersion { get; set; }

        /// <summary>
        /// 微信协议类型
        /// </summary>
        [JsonProperty("wx-protocol-type"), JsonPropertyName("wx-protocol-type")]
        public string WxProtocolType { get; set; }

        /// <summary>
        /// 微信版本号
        /// </summary>
        [JsonProperty("wx-short-version"), JsonPropertyName("wx-short-version")]
        public string WxShortWersion { get; set; }

        /// <summary>
        /// app微信版本
        /// </summary>
        [JsonProperty("wx-app-version"), JsonPropertyName("wx-app-version")]
        public string WxAppWersion { get; set; }

        /// <summary>
        /// 微信唯一编号
        /// </summary>
        [JsonProperty("device-user-serial-no"), JsonPropertyName("device-user-serial-no")]
        public string DeviceUserSerialNo { get; set; }

        /// <summary>
        /// 微信Id
        /// </summary>
        [JsonProperty("robot-wxid"), JsonPropertyName("robot-wxid")]
        public string RobotWxId { get; set; }

        /// <summary>
        /// 签名:sign=MD5(公共参数的值[按参数名升序排列]-sign+业务参数 +key）
        ///空值不参与签名
        ///举例：MD5(1720180190122020011300400197DeviceUserLogUpdateios_protocol1.1.0wxid_0p2pujkqnz3e2iPad7.0.4{ json数据}key)
        /// </summary>
        [JsonProperty("sign"), JsonPropertyName("sign")]
        public string Sign { get; set; }

        /// <summary>
        /// 接口的方法名，action名称
        /// </summary>
        [JsonProperty("method"), JsonPropertyName("sign")]
        public string Method { get; set; }
    }
}